草庐IT

c++ - C++中auto_ptr的指针运算

全部标签

c# - 三元运算符语法来选择接口(interface)的实现

这个问题在这里已经有了答案:Implicitconversionissueinaternarycondition[duplicate](4个答案)关闭8年前。我想知道为什么这行代码不能编译:ILogStuffLogger=(_logMode)?newLogToDisc():newLogToConsole();注意LogToDisc和LogToConsole都实现了ILogStuff,_logMode是一个bool变量。我收到的错误消息是:Error3:Typeofconditionalexpressioncannotbedeterminedbecausethereisnoimplici

c# - IS 运算符是否拆箱值类型?

我找不到以下问题的答案:objecto=10;//Boxinti=(int)o;//Unbox说的很清楚,下面的不清楚boolisInt=oisint;//Istheunboxhereornot? 最佳答案 不,这不是拆箱-它只是检查类型是否正确。不要忘记确实涉及到一个对象,它有一个类型。无论该值是否为装箱值类型值,检查该类型基本上都是相同的操作。(对于值类型或任何密封类型可能有一些优化是可行的,因为没有要考虑的继承,但从根本上说它仍在检查对象header的“类型”部分。)一种检查方法是编译代码并使用ILASM查看IL://obje

c# - 试图理解==运算符与对象

这个问题已经有了答案:C#differencebetween==andEquals()17答objecta="1";objectb="1";Console.WriteLine(a==b);//returnsTrueobjectc=1;objectd=1;Console.WriteLine(c==d);//returnsFalse上面的代码返回整数和字符串的不同结果。我不明白为什么。有人能帮我理解这背后的原因吗?那么==(运算符)和ReferenceEquals(函数)之间有什么区别呢? 最佳答案 尽管EdShasanswered检查

c# - 什么是 |和 ^ 运算符用于什么?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Whatarebitwiseoperators?最近我发现了一些使用|和^运算符。我猜这些是or和negation运算符。那么这些运算符实际上代表什么?

C# if 语句速记运算符 (?:) results in unreachable code

为什么我在使用VisualStudio2010的C#中收到此警告?"Unreachableexpressioncodedetected"来自以下代码(DateTime.Now以绿色波浪线下划线):publicDateTimeStartDate{get{DateTimedt=(DateTime)ViewState["StartDate"];return((dt==null)?DateTime.Now:dt);}} 最佳答案 因为DateTime结构永远不能为null。如果您期望可能的空值,则必须使用可为空的DateTime结构。您也可

c# - 让图像 ManipulationMode 捕获指针

在我的应用中,用户可以选择一个Image并将其拖到Grid上,以进行操作。我通过处理Grid的PointerEntered事件来做到这一点。在这里,我检测用户是否选择了图像以及用户是否按住鼠标按钮。现在我想将Image放在网格上,并将(仍然按下的)指针传递到我的Image,所以Imagecode>使用自己的ManipulationStarted、ManipulationDelta和ManipulationCompleted事件。这样一来,用户就可以将图像从图像列表中顺畅地拖动到Grid中,而不必松开并单击该元素。我尝试在PointerEntered中从sender释放指针,并使用Cap

c# - 在 C# 中从锯齿状数组转换为双指针

这里有一个简单的问题:有什么方法可以将锯齿状数组转换为双指针?例如将double[][]转换为double**不幸的是,这不能仅通过转换来完成(因为它可以在普通的旧C中实现)。使用fixed语句似乎也不能解决问题。在C#中是否有任何(最好尽可能有效)方法来完成此操作?我怀疑解决方案可能根本不是很明显,但我仍然希望有一个简单明了的解决方案。 最佳答案 一点安全。正如对第一个解决方案的评论中提到的,嵌套数组可以移动,因此它们也应该被固定。unsafe{double[][]array=newdouble[3][];array[0]=new

c# - 为什么 Postfix++/-- 在 C# 中被归类为主要运算符?

目前,我正在向一类C++程序员讲授C#语言的基础知识。在我们讨论主题运算符时,我使用了C#标准类别的主要、一元等运算符。其中一位与会者感到不解,因为在C#标准中,“后缀++/--”被归入了初级运算符的范畴,而不是“前缀++/--”。她造成这种混淆的理由是,她宁愿根据运算符“前缀++/--”来实现C++运算符“postfix++/--”。换句话说,她宁愿将运算符“前缀++/--”算作主要运算符。-我明白她的意思,但我不能给她背后的理由。好的,运算符“postfix++/--”的优先级高于“prefix++/--”,但这是唯一的理由吗?规范在“14.2.1运算符优先级和结合性”部分提到了它

c# - C# 垃圾收集器如何找到唯一引用是内部指针的对象?

据我所知,在C#中,ref和out参数是通过仅传递相关值的原始地址来传递的。该地址可以是指向数组中元素或对象中字段的内部指针。如果发生垃圾回收,可能仅对某个对象的引用是通过这些内部指针之一进行的,如:usingSystem;publicclassFoo{publicintfield;publicstaticvoidIncrement(refintx){System.GC.Collect();x=x+1;Console.WriteLine(x);}publicstaticvoidMain(){Increment(refnewFoo().field);}}在那种情况下,GC需要找到对象的开

c# - 为什么 System.DateTime 结构具有布局类型 Auto?

结构System.DateTime及其堂兄System.DateTimeOffset将其结构布局类型设置为“自动”。这可以通过以下方式看到:typeof(DateTime).IsAutoLayout/*true*/或:typeof(DateTime).StructLayoutAttribute.Value/*Auto*/或者从声明的IL中可以看出:.classpublicautoansiserializablesealedbeforefieldinitSystem.DateTime¯¯¯¯通常情况下,用C#编写的结构(即不是枚举的.NET值类型)将具有“顺序”布局(除非已应用Struc